package org.layui.shop.controller;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.layui.shop.dao.UserDao;
import org.layui.shop.dao.impl.UserDaoImpl;
import org.layui.shop.entity.User;

import java.io.File;
import java.io.IOException;

/**
 * 修改用户头像
 *
 * @author ZQX
 * @date 2024-12-03
 */
@WebServlet("/update_head.do")
public class UpdateUserHeadServlet extends BaseController {
    @Override
    public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");

        // 1.获取表单中输入的数据
        int userId = Integer.parseInt(req.getParameter("user_id"));
        String headImg = req.getParameter("head_img");

        // 2.验证数据的合法性 - 正则表达式（略）

        // 3.加工处理 - 业务实现
        // 3.1）实例化 DAO 对象
        UserDao userDao = new UserDaoImpl();

        // 3.2）调用 DAO 对象的方法，根据用户ID修改头像
        int row = userDao.updateUserHead(userId, headImg);

        // 4.响应结果 - 先数据封装到 ResponseData,然后序列为 JSON 字符串，最后响应数据
        if (row == 1) {
            // 1.删除原来的照片
            // 1.1 获取真实路径
            String realPath = req.getServletContext().getRealPath("/images/head/");

            // 1.2 从会话中获取登录用户，进而获取登录用户原来的头像
            HttpSession session = req.getSession();
            User user = (User) session.getAttribute("user");
            String oldImg = user.getImage();
            File oldImgFile = new File(realPath + oldImg);

            // 1.3 删除用户原来的头像
            if(oldImgFile.exists()) {
                oldImgFile.delete();
            }

            // 2.响应结果
            print(res, success(200, null));
            return;
        }
        print(res, error(500, "修改头像失败"));
    }
}
